providers.tsx 865 B

123456789101112131415161718192021222324252627
  1. "use client";
  2. import { useRouter } from "@/i18n";
  3. import { setHtmlFontSize } from "@/utils";
  4. import { NextUIProvider } from "@nextui-org/system";
  5. import { ThemeProvider } from "next-themes";
  6. import { ThemeProviderProps } from "next-themes/dist/types";
  7. import { ReactNode, useLayoutEffect } from "react";
  8. export interface ProvidersProps {
  9. children: ReactNode;
  10. themeProps?: Omit<ThemeProviderProps, "children">;
  11. }
  12. export const Providers = ({ children, themeProps }: ProvidersProps) => {
  13. const router = useRouter();
  14. useLayoutEffect(() => {
  15. // 调用响应式方法
  16. setHtmlFontSize();
  17. }, []);
  18. return (
  19. <div id="app" className="bg-black">
  20. <NextUIProvider navigate={router.push}>
  21. <ThemeProvider {...themeProps}>{children}</ThemeProvider>
  22. </NextUIProvider>
  23. </div>
  24. );
  25. };